<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Pago extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los pagos a clientes referentes activos o inactivos pero NO los borrados (-1). En el caso de pasar un id de cliente
	//en la URL se muestra solo los pagos a ese cliente referente
	function consultar($idCliente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: que idCliente sea numerico y mayor o igual que cero. Igual que cero quiere decir que hay que mostrar todos los pagos a clientes existentes
			if(is_numeric($idCliente) && $idCliente>=0){				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los clientes registrados para pedirle un listado con todos ellos
				$this->load->model('m_cliente');
				
				//Busco todos los clientes activos
				$listadoClientes = $this->m_cliente->buscarActivos();
				
				//Le paso el listado de todos los clientes a la vista para que los muestre en un combo de filtrado
				$datos['clientes'] = $listadoClientes;
				
				//Le paso a la vista el id del cliente seleccionado
				$datos['idClienteSel'] = $idCliente;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Restricciones a la consulta de la busqueda de pagos a clientes segun el cliente seleccionado
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				
				$restriccion = "";
				if($idCliente!=0){
					$restriccion .= " AND pago.idCliente=".$idCliente;
				}
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los pagos a clientes registrados
				$this->load->model('m_pago');
										
				//Busco todos los pagos a clientes, tanto pagos como pendientes, menos los borrados(-1)
				$listadoPagos = $this->m_pago->buscar($restriccion);
				
				//Le paso el listado de todos los pagos a clientes a la vista para que los muestre en una tabla
				$datos['pagos'] = $listadoPagos;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				$totalPagado = $this->m_pago->buscarTotal($restriccion);
										
				$datos['totalPagado'] = $totalPagado;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo la vista donde se muestra la tabla de pagos a clientes y la guardo en una variable para pasarsela a la vista principal
				$datosPrincipal['vista'] = $this->load->view('v_pagos', $datos, true);
				
				//Cargo la vista principal con los datos de la vista consultar pagos a clientes
				$this->load->view('v_admin', $datosPrincipal);
			} else {
				//No se han pasado los parametros minimos necesarios para consultar los pagos a clientes existentes.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	function eliminar($idPago=null, $idCliente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: Que idPago sea numerico y mayor que cero. Ademas que idCliente sea numerico y mayor o igual que cero.			
			if(is_numeric($idPago) && $idPago>0 && is_numeric($idCliente) && $idCliente>=0){
				//Cargo el modelo donde estan los datos de los pagos a clientes registrados
				$this->load->model('m_pago');
				
				//Elimino al pago al cliente pasado por la url
				$respuesta = $this->m_pago->eliminar($idPago, $this->session->userdata('idUsuarioLog'));
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los clientes registrados para pedirle un listado con todos ellos
				$this->load->model('m_cliente');
				
				//Busco todos los clientes activos
				$listadoClientes = $this->m_cliente->buscarActivos();
				
				//Le paso el listado de todos los clientes a la vista para que los muestre en un combo de filtrado
				$datos['clientes'] = $listadoClientes;
				
				//Le paso a la vista el id del cliente seleccionado
				$datos['idClienteSel'] = $idCliente;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Restricciones a la consulta de la busqueda de servicios de clientes segun el cliente seleccionado
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				
				$restriccion = "";
				if($idCliente!=0){
					$restriccion .= " AND pago.idCliente=".$idCliente;
				}
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los pagos a clientes registrados
				$this->load->model('m_pago');
										
				//Busco todos los pagos a clientes, tanto pagos como pendientes, menos los borrados(-1)
				$listadoPagos = $this->m_pago->buscar($restriccion);
				
				//Le paso el listado de todos los pagos a clientes a la vista para que los muestre en una tabla
				$datos['pagos'] = $listadoPagos;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				$totalPagado = $this->m_pago->buscarTotal($restriccion);
										
				$datos['totalPagado'] = $totalPagado;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
				
				//Cargo la vista donde se muestra la tabla de pagos a clientes
				$this->load->view('v_pagos', $datos);
			} else {
				//No se han pasado todos los parametros necesarios para borrar un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se han pasado todos los parametros necesarios para borrar un pago a cliente");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un pago a cliente");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function abrirPantallaCrear($idCliente=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){							
			//Segunda comprobacion: que idCliente sea numerico y mayor o igual que cero. Igual que cero quiere decir que no hay que seleccionar ningun cliente.
			if(is_numeric($idCliente) && $idCliente>=0){
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los clientes registrados para pedirle un listado con todos ellos
				$this->load->model('m_cliente');
				
				//Busco todos los clientes activos
				$listadoClientes = $this->m_cliente->buscarActivos();
				
				//Le paso el listado de todos los clientes a la vista para que los muestre en un combo
				$datos['clientes'] = $listadoClientes;
				
				//Le paso a la vista el id del cliente seleccionado
				$datos['idClienteSel'] = $idCliente;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo la vista donde se muestra el formulario para crear un pago a cliente y la guardo en una variable para pasarsela a la vista principal
				$datosPrincipal['vista'] = $this->load->view('v_pagos_crear',$datos, true);
				
				//Cargo la vista principal con los datos de la vista para crear un pago a cliente
				$this->load->view('v_admin', $datosPrincipal);
			} else {
				//No se han pasado todos los parametros necesarios para crear un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function crear(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: Que se haya pasado por post el cliente, monto y estado del pago a cliente a crear
			if(is_numeric($this->input->post('cliente',true)) && $this->input->post('cliente',true)>0 &&
			   is_numeric($this->input->post('monto',true)) && $this->input->post('monto',true)>0 &&
			   ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0' || $this->input->post('estado',true) == '2')){
				
				//Cargo el modelo donde estan los datos de los pagos a clientes
				$this->load->model('m_pago');
								
				//Creamos el pago al cliente
				$resultado = $this->m_pago->crear($this->input->post('cliente',true),
												  $this->input->post('monto',true),
												  $this->input->post('observacion',true),
												  $this->input->post('estado',true), $this->session->userdata('idUsuarioLog'));
				
				if($resultado == 1){
					$ultimoPagoCreado = $this->db->insert_id();
															
					//Cargo el modelo para cargar un mail a la cola
					$this->load->model('m_cola_mail');
					
					//Creamos el mail. idTabla, idRegistro, tipoOperacion, estado
					$resultado = $this->m_cola_mail->crear(4, $ultimoPagoCreado, 1, 2, $this->session->userdata('idUsuarioLog'));
					
					echo("<script> alert('El pago al cliente se ha creado correctamente.');</script>");
				}else{
					echo("<script> alert('El pago al cliente no se ha creado. Ha habido un error.');</script>");
				}
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function abrirPantallaModificar($idPago=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: Que idPago pasado sea numerico y mayor que cero.
			if(is_numeric($idPago) && $idPago>0){
				//Cargo el modelo donde estan los datos de los pagos a clientes registrados
				$this->load->model('m_pago');
				
				//Busco al pago al cliente que hay que modificar
				$pago = $this->m_pago->get($idPago);
				
				//Tercera comprobacion: Que el pago a cliente pasado por la url sea existente
				if($pago->num_rows() == 1){
					//Le paso el pago a modificar a la vista
					$datos['pagoSel'] = $pago;
					
					//Busco al pago siguiente del que hay que modificar
					$idPagoSig = $this->m_pago->getContiguo($idPago,1);
					
					//Le paso el pago a cliente siguiente del que hay que modificar a la vista
					$datos['idPagoSig'] = $idPagoSig;
					
					//Busco al pago a cliente anterior del que hay que modificar
					$idPagoAnt = $this->m_pago->getContiguo($idPago,-1);
					
					//Le paso el pago a cliente anterior del que hay que modificar a la vista
					$datos['idPagoAnt'] = $idPagoAnt;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los clientes registrados para pedirle un listado con todos ellos
					$this->load->model('m_cliente');
					
					//Busco todos los clientes activos e inactivos. Ya que un referente puede ser un cliente inactivo
					$listadoClientes = $this->m_cliente->buscar();
					
					//Le paso el listado de todos los clientes a la vista para que los muestre en un combo
					$datos['clientes'] = $listadoClientes;
															
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo la vista donde se muestra el formulario para modificar un pago a cliente y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_pagos_modificar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para modificar un pago
					$this->load->view('v_admin', $datosPrincipal);
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para modificar un pago a cliente
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function modificar($idPago=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){	   
			//Segunda comprobacion: Que se haya pasado por post el cliente, monto y estado del pago a cliente a modificar
			if(is_numeric($idPago) && $idPago>0 && is_numeric($this->input->post('monto',true)) && $this->input->post('monto',true)>0 && 
			   ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0' || $this->input->post('estado',true) == '2')){
				
				//Cargo el modelo donde estan los datos de los pagos a cliente
				$this->load->model('m_pago');
				
				//Modificamos el pago a cliente
				$resultado = $this->m_pago->modificar($idPago,													  
													  $this->input->post('monto',true),
													  $this->input->post('observacion',true),
													  $this->input->post('estado',true));
				if($resultado == 1){
					//Cargo el modelo para cargar un mail a la cola
					$this->load->model('m_cola_mail');
					
					//Creamos el mail. idTabla, idRegistro, tipoOperacion, estado
					$resultado = $this->m_cola_mail->crear(4, $idPago, 2, 2, $this->session->userdata('idUsuarioLog'));
					
					echo("<script> alert('El pago al cliente se ha modificado correctamente. ".$mensaje."');</script>");
				} else{
					echo("<script> alert('El pago al cliente no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
				}
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
}

/* End of file pago.php */
/* Location: ./application/controllers/pago.php */